package com.tanhua.dubbo.api.mongo;

import com.tanhua.domain.mongo.Conclusion;
import com.tanhua.domain.mongo.Question;
import com.tanhua.domain.mongo.Questionnaire;
import com.tanhua.domain.mongo.UserEvaluate;
import org.bson.types.ObjectId;

import java.util.List;

public interface SoulApi {
    /**
     * 返回所有的用户问卷
     * @return
     */
    List<Questionnaire> findSoultest();

    /**
     * 根据问题id找到问题
     * @param qid
     * @return
     */
    Question findQuestionById(Integer qid);

    /**
     * 根据用户id找到用户评估报告
     * @param id
     * @return
     */
    UserEvaluate findUserEvaluateById(Long id);

    /**
     * 保存用户评估报告
     * @param userEvaluate
     */
    void saveUserEvaluate(UserEvaluate userEvaluate);

    /**
     * 修改用户评分,并且将用户的level+1

     */
    void updateUserEvalute(UserEvaluate userEvaluate);

    /**
     * 根据任意一个题目id获取问卷号
     * @param questionId
     * @return
     */
    Questionnaire findQuestionnaire(Long questionId);

    /**
     * 根据cid找到对应的结论
     *
     *
     */
    Conclusion findConclusionsById(Integer cid);

    /**
     * 根据qid列表找到对应的问题集合
     * @param questionsId
     * @return
     */
    List<Question> findQuestionsByIdList(List<Integer> questionsId);

    /**
     * 根据传递的cid获得其他相近的用户。
     * @param cid
     * @param userId
     * @return
     */
    List<UserEvaluate> findUserEvaluateByCId(Integer cid, Long userId);

    /**
     * 根据用户ID和对应的问卷ID找到对应的数据
     * @return
     */
    UserEvaluate findUserEvaluateByIdAndQid(Long id, ObjectId qid);



    /**
     * 保存结论
     * @param conclusion
     */
    void saveConclusion(Conclusion conclusion);

    /**
     * 保存问题
     * @param question
     */
    void saveQuestion(Question question);

    /**
     * 保存问卷
     * @param questionnaire
     */
    void saveQuestionnaire(Questionnaire questionnaire);
}
